#ifndef BASEOBJECT_H
#define BASEOBJECT_H

#include "BaseInterface.h"

class BaseObject : public BaseInterface
{
private:
	float posX, posY;
	float width, height;
	float velocityX, velocityY;
	float rotation;
	bool isActive;
	int imageID;
	int refCount;
	int objType;

public:
	BaseObject();
	~BaseObject();

	virtual void Update(float _dT);
	virtual void Render();

	virtual RECT GetCollisionRect();
	virtual bool CheckCollision(BaseInterface* _base);

	void AddRef();
	void Release();

	////////////////////////////////////////////
	// ACCESSORS
	////////////////////////////////////////////
	float GetPositionX()	{return posX;}
	float GetPositionY()	{return posY;}
	float GetWidth()		{return width;}
	float GetHeight()		{return height;}
	float GetVelocityX()	{return velocityX;}
	float GetVelocityY()	{return velocityY;}
	float GetRotation()		{return rotation;}
	bool IsActive()			{return isActive;}
	int GetImageID()		{return imageID;}
	int GetType()			{return objType;}

	////////////////////////////////////////////
	// MUTATORS
	////////////////////////////////////////////
	void SetPositionX(float _value)		{posX = _value;}
	void SetPositionY(float _value)		{posY = _value;}
	void SetWidth(float _value)			{width = _value;}
	void SetHeight(float _value)		{height = _value;}
	void SetVelocityX(float _value)		{velocityX = _value;}
	void SetVelocityY(float _value)		{velocityY = _value;}
	void SetRotation(float _value)		{rotation = _value;}
	void SetIsActive(bool _status)		{isActive = _status;}
	void SetImageID(int _value)			{imageID = _value;}
	void SetObjectType(int _type)		{objType = _type;}

};

#endif	// BASEOBJECT_H